#ifndef _BASE_PRIMITIVES_H_
#define _BASE_PRIMITIVES_H_

namespace Maha
{
      namespace Base
      {
	      struct deleter
	      {
	      	template <typename T>
	      	void operator()(const T& pX) const
	      	{
	      		delete pX;
	      	}
	      };

	      struct first_param_deleter_deleter
	      {
		      template <typename T>
		      void operator()(const T& pX) const
		      {
		      	delete pX.first;
		      }
	      };
	
	      struct second_param_deleter
	      {
		      template <typename T>
		      void operator()(const T& pX) const
		      {
		      	delete pX.second;
		      }
	      };
      
            template <class T1, class T2>
            T1 static_cast_fun(T2 t2)
            {
                  return static_cast<T1>(t2);
            };

      } // Base
} // Maha

#endif // _BASE_PRIMITIVES_H_
